package cn.oppexecise;

/**
 * @author SWJ
 * @create 2021-06-10 15:14
 * 本类用于完成OOP汽车案例
 */
public class DesignCar {
    public static void main(String[] args) {
        /**创建父类对象测试*/
        Car c = new Car();
        c.setColor("黑色");
        System.out.println(c.getColor());
//        c.start();
        c.stop();
        //父类自己的功能
        Bmw b = new Bmw();
        System.out.println(b.color);
        Car c2 = new Bmw();
        c2.stop();
        //多态调用bmw停止
        Car c3 = new Porsch();
        c3.start();
        //静态调用的父类的方法

    }
}

/**
 * 通过总结归纳总结，使用关键字class抽象封装一个类来描述
 */
class Car {
    /**
     * 属性通过变量来表述
     * 属性进行封装
     */

    private String brand;
    private String Color;
    private double price;
    private double size;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return Color;
    }

    public void setColor(String color) {
        Color = color;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public double getSize() {
        return size;
    }

    public void setSize(double size) {
        this.size = size;
    }

    /**
     * 行为用方法进行描述  设置get set方法
     */

    public static void start() {
        System.out.println("车启动");
    }

    public void stop() {
        System.out.println("车停止");
    }
}

/**
 * 创建宝马类
 */
class Bmw extends Car {
    String color = "黑色";

    @Override
    public void stop() {
        System.out.println("Bmw停车");

    }
}

class Porsch extends Car {
    String color = "白色";


    public static void start() {
        System.out.println("Porsch车启动");
    }

    /**
     * 新增子类特有功能
     */
    public void fly() {
        System.out.println("porsch启动");

    }
}